package main

import (
	"fmt"
	"github.com/joho/godotenv"
	"go-cloud-disk/common/log"
	"go-cloud-disk/global"
	"go-cloud-disk/internal"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"os"
)

var (
	//定义数据库连接的相关参数值
	//连接数据库的用户名
	userName = "root"
	//连接数据库的密码
	password = "Qq123123"
	//连接数据库的地址
	ipAddress = "127.0.0.1"
	//连接数据库的端口号
	port = 3306
	//连接数据库的具体数据库名称
	dbName = "test"
	//连接数据库的编码格式
	charset = "utf8"
)

func main() {
	global.Env = initEnv()
	fmt.Println("env: ", os.Getenv("ENV"))
	fmt.Println("global.Env: ", global.Env)

	err := InitDB()
	if err != nil {
		log.Log().Panic("连接数据库异常, %s", err)
		return
	}

	api := internal.InitRouter()

	if err := api.Run(":8081"); err != nil {
		log.Log().Error("无法监听[%s]，%s", "8081", err)
	}
}

func initEnv() string {
	// 加载.env文件配置
	err := godotenv.Load(".env")
	// 获取运行环境
	env := os.Getenv("ENV")
	if err != nil {
		fmt.Println("配置文件加载失败")
		env = "pro"
	}
	return env
}

func InitDB() (err error) {
	log.Log().Info("初始化数据库连接")
	dsn := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=%s&parseTime=True&loc=Local", userName, password, ipAddress, port, dbName, charset)
	//不会校验用户名和密码是否正确，只会对dsn的格式进行检测
	global.DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		return err
	}
	log.Log().Info("连接数据库成功!")
	//执行迁移
	migration()
	return nil
}

func migration() {

}
